
#设置最低cmake版本
cmake_minimum_required(VERSION 3.12)

#定义设备号
set(DEVICE_ID "tunnel_test_dev_1")
set(TUNNEL_ID "tunnel_0")

# 定义版本变量
set(PROJECT_VERSION_MAJOR 1)
set(PROJECT_VERSION_MINOR 0)
set(PROJECT_VERSION_PATCH 0)
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")

#定义工程名字
project(tunnel_scan_main_project VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})

# 获取时间戳
string(TIMESTAMP TIMESTAMP "%Y-%m-%d %H:%M:%S")

 
#设置编译选项
#设置C++标准
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#设置C标准
set(CMAKE_C_STANDARD 17)

# ----------------------------
# 实时性全局配置（关键部分）
# ----------------------------

# 查找线程库（pthread）
find_package(Threads REQUIRED)

# 定义全局宏（所有目标生效）
add_compile_definitions(_REALTIME_)

# 设置链接器标志（所有可执行文件生效）
# 注意：更推荐通过 target_link_libraries 传递依赖
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lrt")

# 生成配置文件
configure_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/config/config.h.in
  ${CMAKE_CURRENT_SOURCE_DIR}/config/config.h
)

# 强制指定 Debug 模式（可选）
set(CMAKE_BUILD_TYPE Debug)
# 显式添加调试标志（某些编译器可能需要）
add_compile_options(-g -O0)  # -g 生成调试信息，-O0 禁用优化


add_subdirectory(./app/main)
add_subdirectory(./app/car_module)
add_subdirectory(./app/control_module)

add_subdirectory(./sub_module/lubancat5-btb-io-rs485-module)
add_subdirectory(./sub_module/lubancat5-btb-io-agile-modbus)
add_subdirectory(./sub_module/lubancat5-btb-io-uart-module)
add_subdirectory(./sub_module/lubancat5-btb-io-i2c-module)
add_subdirectory(./sub_module/lubancat5-btb-io-common-module)
add_subdirectory(./sub_module/lubancat5-btb-io-mqtt-module)
add_subdirectory(./sub_module/lubancat5-btb-io-sensor-module)
add_subdirectory(./sub_module/lubancat5-btb-io-actuator-module)
add_subdirectory(./sub_module/lubancat5-btb-io-usb-camera-module)
add_subdirectory(./sub_module/lubancat5-btb-io-spi-module)


